%module OISMouse

%{
#include "OIS/OISMouse.h"
	%}

/*
#include "OISObject.h"
#include "OISEvents.h"
*/

%import "OISPrereqs.i"

namespace OIS
{
	//! Button ID for mouse devices
	enum MouseButtonID
	{
		MB_Left = 0, MB_Right, MB_Middle,
		MB_Button3, MB_Button4,	MB_Button5, MB_Button6,	MB_Button7
	};

	/**
		Represents the state of the mouse
		All members are valid for both buffered and non buffered mode
	*/
	class MouseState
	{
	public:
		MouseState(); //: width(50), height(50), buttons(0) {};

		/** Represents the height/width of your display area.. used if mouse clipping
		or mouse grabbed in case of X11 - defaults to 50.. Make sure to set this
		and change when your size changes.. */
		mutable int width, height;

		//! X Axis component
		Axis X;

		//! Y Axis Component
		Axis Y;

		//! Z Axis Component
		Axis Z;

		//! represents all buttons - bit position indicates button down
		int buttons;

		//! Button down test
		inline bool buttonDown( MouseButtonID button ) ;

		//! Clear all the values
		void clear();

	};

	/** Specialised for mouse events */
	%nodefaultctor MouseEvent;
	class MouseEvent //: public EventArg
	{
	public:
//		MouseEvent( Object *obj, const MouseState &ms )	: EventArg(obj), state(ms) {}
//		virtual ~MouseEvent() {}

		//! The state of the mouse - including buttons and axes
		const MouseState &state;
	};

}
